﻿using SMARTHOTEL.RoomTypes;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;
namespace SMARTHOTEL.Products
{
    public interface IProductService : IApplicationService
    {
        /// <summary>
        /// 添加分类
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> CreateAllAsync(CreateUpdateSortDto dto);
        /// <summary>
        /// 查询分类
        /// </summary>
        /// <returns></returns>
        Task<ResultDto<List<SortDto>>> GetAllAsync();
        /// <summary>
        /// 添加商品标签
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> CreateProductLabelAsync(CreateUpdateProductLabelDto dto);
        /// <summary>
        /// 查询商品
        /// </summary>
        /// <returns></returns>
        Task<ResultDto<List<GetProductLabelDto>>> GetProductLabel();
        /// <summary>
        /// 添加商品
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> CreateAllProduct(CreateProductDto dto);
        /// <summary>
        /// 根据条件查询
        /// </summary>
        /// <param name="productname"></param>
        /// <param name="commoditystatus"></param>
        /// <returns></returns>
        Task<ResultDto<ApiPage<GetProductDto>>> GetAllProduct(ProductQuerycondition condition);
        /// <summary>
        /// 根据编号查询
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<ResultDto<UpdateProductDto>> GetProduct(Guid id);
        /// <summary>
        /// 更新商品
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> UpdateAllProductAsync(UpdateProductDto dto);
        /// <summary>
        /// 删除商品 
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> DeleteAllProductAsync(string id);
        /// <summary>
        /// 更新商品状态
        /// </summary>
        /// <param name="id"></param>
        /// <param name="statues"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> UpdateProductStatuesAsync(string id, int statues);
        /// <summary>
        /// 添加预约
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> CreateAllReservation(CreateUpdateReservationDto dto);
        /// <summary>
        /// 根据条件查询预约
        /// </summary>
        /// <param name="productname"></param>
        /// <param name="commoditystatus"></param>
        /// <returns></returns>
        Task<ResultDto<ApiPage<GetReservationDto>>> GetAllReservation(ReservationQuerycondition condition);
        /// <summary>
        /// 根据编号查询
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<ResultDto<GetReservationDto>> GetReservation(Guid id);
        /// <summary>
        /// 修改预约
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> UpdateAllReservationAsync(UpdateReservationDto dto);
        /// <summary>
        /// 删除预约
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> DeleteAllReservationAsync(string id);
        /// <summary>
        /// 修改预约状态
        /// </summary>
        /// <param name="id"></param>
        /// <param name="statues"></param>
        /// <returns></returns>
        Task<ResultDto<bool>> UpdateReservationStatuesAsync(string id, int statues);
 

    }
}
